home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 441 / dlibs12 / bzero.s < prev    next >
Text File  |  1990-11-23  |  636b  |  30 lines

  1. *    char *bzero(dest, len)
  2. *        register char *dest;
  3. *        register unsigned int len;
  4.  
  5. .text
  6. .globl _bzero
  7. _bzero:
  8.     move.l    4(a7),a0    ; destination
  9.     clr.l    d1
  10.     move.l    8(a7),d1    ; number of bytes
  11.     move.l    a1,d0
  12.     btst    #0,d0        ; odd alignment?
  13.     beq    bzero0
  14.     clr.b    (a0)+        ; zero first byte
  15.     subq.l    #1,d1        ; and reduce count
  16. bzero0:
  17.     move.l    d1,d2        ; save full count value
  18.     lsr.l    #1,d1        ; convert to word count
  19.     bra    bzero2
  20. bzero1:
  21.     clr.w    (a0)+        ; word zero loop
  22. bzero2:
  23.     dbra    d1,bzero1
  24.     btst    #0,d2        ; extra odd byte to copy?
  25.     beq    bzero3
  26.     clr.b    (a0)+        ; zero last byte
  27. bzero3:
  28.     move.l    4(a7),d0    ; return destination pointer
  29.     rts
  30.